import Config from './config2.js'
import Util from './util2';


export default function(obj) {
  let parameter = {
    url: "",
    type: "GET",
    dataType: "json",
    headers: {
      "Content-type": 'application/json' , //"application/x-www-form-urlencoded"
    },
    data: {}
  }
  parameter = Object.assign(parameter, obj);
  // parameter.data.appId = parameter.data.appId || 1010;

  //将config文件中的常量整合进来
  parameter.headers = Object.assign(parameter.headers, Config.headers);
  if (parameter.url.indexOf('app/weixin/login') == -1) {
    parameter.headers.token = wx.getStorageSync(Config.authName) || '';
    parameter.headers.userId = wx.getStorageSync(Config.userIdKey) || '';
  }

//判断头类型是否json,如果是则需要转一下参数类型
  if(parameter.headers['Content-type'] === 'application/json'){
    parameter.data = JSON.stringify(parameter.data);
  }
  return new Promise(function(resolve, reject) {
    wx.request({
      header: parameter.headers,
      method: parameter.type,
      url: Config.apiAppName(parameter.url),
      dataType: parameter.dataType,
      data: parameter.data,
      fail: function() {
        reject("失败了");
      },
      success: function ({ data, statusCode}) {
        //登陆过期
        // if (data && data.msg && data.msg.indexOf('request header的token参数不能为空') < 0) {
        //   wx.clearStorageSync();
        //   wx.redirectTo({
        //     url: '/pages/biz/login/login'
        //   })
        // }

        if (statusCode == 502 || statusCode== 503){
          wx.showToast({
            title: "服务器升级中，请稍后再试",
            icon: 'none',
            duration: 2000
          })
          reject("失败了");
        } else{
          if(!data || !data.success) {
            if (data.msg == "request header的token参数不能为空,请先登录" || data.msg == "token 校验失败，请先登录" || data.message == "token 校验失败，请重新登录"){
              //过期清除所有缓存
              let referrerId = wx.getStorageSync(Config.referrerIdKey);
              Util.clearStorage(Config.retainKey);
              wx.setStorageSync(Config.referrerIdKey, referrerId);
              const app = getApp()
              let pages = getCurrentPages();
              if (app.globalData.isReturnLogin !== true) {
                app.globalData.isReturnLogin = true;
                wx.navigateTo({
                  url: '/subPackages/pages/login/login?from=' + pages[pages.length - 1].route,
                })
                setTimeout(() => {
                  app.globalData.isReturnLogin = false;
                }, 2000)
              } else {
                //解决页面触发太多需要校验token的请求，重复跳转到登录页问题
                setTimeout(() => {
                  app &&(app.globalData.isReturnLogin = false);
                }, 2000 )
              }
            }
          }
          resolve(data);
        }
      }
    });
  })
}